/**
 * Werwolftool-Spielleiterfunktionen
 * @author JANNiS <jannis@huffle-home.de>
 */
 
/**
 * Klasse für die Spielerliste mit Funktionen
 */
var DarstellungSpielerliste = new Class({
	/**
	 * Konstruktor, bereitet die Spielerliste vor
	 * Macht das Spieler-Einfügen möglich
	 */
	initialize: function() {
		// Beim Klick auf den Button oder Absenden des Formulars...
		$("neuspieler").addEvent("submit", function(e) {
			// Standard-Event (Formular absenden und damit Seite-Neuladen) abbrechen
			e.stop();
			// Spieler-Name merken
			var name = $("neuspielername").get("value");
			// Funktion aufrufen
			darstellung.spielerliste.neuerSpieler(name);
			// Namens-Eingabefeld leeren
			$("neuspielername").set("value", "");
		});
	},
	
	/**
	 * Lädt die Spielerliste neu und gibt sie mit den Stimmen aus
	 */
	aktualisieren: function() {
		// Spielerliste leeren
		$("spielernamen").empty();
		
		// Für jede Rolle ...
		spiel.rollen.each(function(rolle) {
			// Container für die Rolle erstellen
			var rollenContainer = this.rollenContainer(rolle);
			
			// für jeden Spieler mit dieser Rolle ...
			rolle.get("spieler").each(function(spielername) {
				// Spieler holen
				var spieler = spiel.getSpieler(spielername);
				// Container für Spieler erstellen
				var spielerContainer = this.spielerContainer(spieler);
				// Spieler-Container zum Rollen-Container hinzufügen
				rollenContainer.grab(spielerContainer);
			}, this);
			
			// Rollen-Container Spieler-Liste einfügen
			$("spielernamen").grab(rollenContainer);
		}, this);
		
		// Stimmen-Auswahlmöglichkeiten in der Infobox aktualisieren
		darstellung.infobox.aktualisiereStimmen();
	},
	
	/**
	 * Erstellt einen Rollen-Container und gibt ihn zurück
	 * @param rolle Rolle für den Container
	 * @return Rollen-Container
	 */
	rollenContainer: function(rolle) {
		// neuen Div-Container erstellen
		var container = new Element("div", {"class": "rolle"});
		
		// Rollentitel
		var rollenTitel = new Element("h1", {text: rolle.get("name")});
		// Rollentitel zum Container hinzufügen
		container.grab(rollenTitel);
		
		// Container zurückgeben
		return container;
	},
	
	/**
	 * Erstellt einen Container für den Spieler und gibt ihn zurück
	 * @param spieler Spieler des Containers
	 * @return Spieler-Container
	 */
	spielerContainer: function(spieler) {
		// neuen Div-Container erstellen
		var container = new Element("div", {"class": "spieler"});
		
		// Link zu den Eigenschaften des Spielers
		var spielerLink = new Element("a", {href: "", text: spieler.get("name")});
		// Beim Klick auf den Spielernamen
		spielerLink.addEvent("click", function(e) {
			// Standard-Event (Seite-Neuladen) abbrechen
			e.stop();
			// Infobox mit Daten des Spielers öffnen
			darstellung.infobox.zeigeSpieler(spieler.get("name"));
		});
		// Spieler-Link zum Container hinzufügen
		container.grab(spielerLink);
		
		// Falls der Spieler bereits gestimmt hat ...
		if(spieler.get("stimme") != null) {
			// ... Stimme anzeigen
			container.appendText(" (-> " + spieler.get("stimme") + ")");
		}
		
		// Container zurückgeben
		return container;
	},
	 
	/**
	 * Fügt neue Spieler zur Liste hinzu
	 * Überprüft, ob der Name gültig ist
	 */
	neuerSpieler: function(name) {
		// Überflüssige Leerzeichen entfernen
		name = name.clean();
		// Falls Spielername nicht leer ...
		if(name != "") {
			// Spieler hinzufügen. Falls er bereits existiert ...
			if(!spiel.neuerSpieler(name)) {
				// Fehlermeldung ausgeben
				alert("Spieler existiert bereits");
			}
			// ... sonst ...
			else {
				// Spielerliste neu laden
				this.aktualisieren();
			}
		}
		// Auswertungsbox schliessen
		darstellung.auswertungsbox.slideOut();
	}
});